package org.example.lease.custom.converters;

import org.example.common.exception.TypeConvertException;
import org.example.lease.model.enums.ItemType;
import org.jetbrains.annotations.NotNull;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import java.util.Arrays;

import lombok.extern.slf4j.Slf4j;

/**
 * @author 宋孟林
 * @description 自定义消息转换，将前端转递的string类型的值转换为后端定义的枚举对象
 * @date: 2025/5/15 18:27
 */
@Component
@Slf4j
public class StringToItemTypeConverters implements Converter<String, ItemType> {
    /**
     * 枚举类使用 class.values()方法可以返回所有的枚举对象
     *
     * @param source 前端传递的参数显示(source)
     * @return 要转换的目标
     */
    @Override
    public ItemType convert(@NotNull String source) {
        Integer code = Integer.parseInt(source);
        return Arrays.stream(ItemType.values())
                .filter(element -> element.getCode().equals(code))
                .findFirst()
                .orElseThrow(() -> new TypeConvertException("类型转换异常"));
    }
}
